// while循环实现图书借阅与归还数量控制
object WhileBasicDemo extends App {
  // 【核心功能1：图书借阅数量控制】
  // 图书馆规则：每位读者最多可借5本书
  val maxBooks = 5
  var currentBooks = 0  // 当前已借图书数量
  var continueBorrowing = true  // 是否继续借阅

  // while循环：条件满足时执行借阅逻辑（先判断，后执行）
  while (continueBorrowing && currentBooks < maxBooks) {
    println(s"\n当前已借: $currentBooks 本, 最多可借 $maxBooks 本")

    // 模拟用户选择：已借<3本时继续借，否则停止（实际场景为控制台输入）
    val wantToBorrow = if (currentBooks < 3) true else false

    if (wantToBorrow) {
      currentBooks += 1  // 借阅数量+1
      println(s"成功借阅1本书, 现在共借 $currentBooks 本")
    } else {
      continueBorrowing = false  // 用户停止借阅，修改循环条件
      println("用户选择停止借阅")
    }
  }

  // 循环结束后处理
  if (currentBooks == maxBooks) {
    println(s"\n已达到最大借阅数量($maxBooks 本), 无法继续借阅")
  }
  println(s"借阅流程结束, 最终借阅 $currentBooks 本")

  // 【变体练习：图书归还功能】
  println("\n=== 图书归还流程 ===")
  var booksToReturn = 3  // 待还图书数量
  while (booksToReturn > 0) {
    println(s"还书1本, 剩余 $booksToReturn 本待还")
    booksToReturn -= 1  // 待还数量-1（修改循环条件，避免无限循环）
  }
  println("所有图书已归还")
}
